Systems are frequently developed which involve a plurality of related components that can be selectively combined in different ways to form a plurality of different products. In some situations, the total number of possible combinations of the components is astronomical, but only a subset of these combinations actually represent valid products. Even so, there can still be a relatively large number of the combinations that represent valid products.
In some situations, the manufacturer selects a small handful of the valid combinations to serve as pre-configured products that will actually be manufactured and marketed. On the other hand, there are applications in which it is desirable to give prospective purchasers the capability to obtain any of the various component combinations that represent valid products, so that each purchaser receives a product which is custom tailored to meet the needs of that purchaser's particular application. However, where the number of valid component combinations is relatively large, and/or where the product is technically complex, this can present a very difficult problem. In particular, the problem is that it is difficult for the prospective purchaser to configure a product, unless he or she first spends a substantial amount of time becoming intimately familiar with technical details of the various components and with the permissible and impermissible ways of combining them.
In order to address this problem, techniques have previously been developed to facilitate configuration of various products from a set of components. In some cases, these techniques have been incorporated into tools like computer programs, which can present one or more questions to a prospective purchaser, and then use the answers to automatically configure a product that meets the purchaser's needs.
While these existing techniques and tools have been generally adequate for their intended purposes, they have not been satisfactory in all respects. In this regard, the process of developing such a tool for any new product has traditionally been a tedious and painstaking task. Identification of an appropriate set of questions typically involves a significant amount of intelligent guessing, and trial and error experimentation. The time required to develop such a tool for any new product is substantial, and may span a number of weeks or even a number of months. In some cases, introduction of the product to the marketplace may need to be delayed until the tool is ready. Alternatively, the product may need to be introduced without the support of a suitable tool, which may adversely affect customer reaction during the crucial period of initial product introduction.
A further consideration is that, due to the complexity involved in the development process, the resulting tools may not have the full range of desired capability. For example, some valid combinations of components may be inadvertently overlooked, such that the resulting tool may not be capable of providing a purchaser with certain valid combinations of components, with the result that the purchaser receives a product that is not optimum for his or her particular application.